package com.matt.repository.base;

import com.matt.foundation.DO.CoursePlanNurseryClassesDo;
import com.matt.foundation.DO.NonPrepareCourseClassesDO;
import com.matt.foundation.DO.NonProcessCourseClassesDO;
import com.matt.foundation.DO.course.CoursePlanClassesDO;
import com.matt.foundation.DO.course.NoticeCoursePlanDO;
import com.matt.foundation.DO.course.PrepareStaffDO;
import com.matt.foundation.query.ClassesCoursePlanQuery;
import com.matt.foundation.query.CoursePlanQuery;
import com.matt.foundation.query.NoticeCoursePlanQuery;
import com.matt.foundation.vo.course.WebCoursePlanListVo;

import java.util.List;

/**
 * *******************************
 * Created by Ron.
 * form com.matt
 * on 2018/3/16
 * *******************************
 */
public interface ClassesCoursePlanRepository {
    List<CoursePlanNurseryClassesDo> findByClassIdAndCourseDate(String classesId, String beginDate, String endDate);



    List<CoursePlanClassesDO> findByConditions(ClassesCoursePlanQuery query);

    Long countByConditions(ClassesCoursePlanQuery query);

    List<CoursePlanClassesDO> findHistoryByCondition(ClassesCoursePlanQuery query);

    Long countHistoryByCondition(ClassesCoursePlanQuery query);


    List<NonPrepareCourseClassesDO> findByCourseDateAndPrepareStatusAndCourseStatus(String beginDate, String endDate, Integer prepareStatus, Integer courseStatus, Integer category);

    List<NonProcessCourseClassesDO> findByCourseDateAndCourseStatus(String today, Integer courseStatus);

    long getEarlyAndNurseryAllCount(CoursePlanQuery query);

    List<WebCoursePlanListVo> findPrepareByConditions(ClassesCoursePlanQuery query);

    Long countPrepareByConditions(ClassesCoursePlanQuery query);


    List<NoticeCoursePlanDO> findNoticeCoursePlan(NoticeCoursePlanQuery query);

    List<CoursePlanClassesDO> findTodayCourseByConditions(ClassesCoursePlanQuery query);

    List<CoursePlanClassesDO> findWeekCourseByConditions(ClassesCoursePlanQuery query);

    List<PrepareStaffDO> getCoursePlanClassList(ClassesCoursePlanQuery query);

    List<CoursePlanClassesDO> getMyWeekCourseList(ClassesCoursePlanQuery query);
  
    List<CoursePlanClassesDO> findKXTodayCourseByConditions(ClassesCoursePlanQuery query);

    List<CoursePlanClassesDO> findKXWeekCourseByConditions(ClassesCoursePlanQuery query);

    List<CoursePlanClassesDO> findTodayCourseSelfByConditions(ClassesCoursePlanQuery query);

    List<WebCoursePlanListVo> findKXPrepareByConditions(ClassesCoursePlanQuery query);

    Long countKXPrepareByConditions(ClassesCoursePlanQuery query);
}
